<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>hello</title>
  <style>
    
    .list {
      width: 300px;
      height: 200px;
      overflow: auto;
      background: skyblue;
    }
    .item {
      line-height: 40px;
      padding: 0 15px;
    }

  </style>
</head>
<body>
	<!-- 准备好容器 -->
	<div id="test"></div>

	<!-- 引入react核心库，引入后全局多了一个React对象 -->
	<script src="../lib/react.development.js"></script>
	<!-- 引入react-dom，用于支持react操作dom，引入后全局多了一个ReactDOM对象 -->
	<script src="../lib/react-dom.development.js"></script>
	<!-- 引入babel，用于将jsx转为js -->
	<script src="../lib/babel.min.js"></script>
  <!-- 引入prop-types，用于对组件标签属性进行限制，引入后全局多了一个PropTypes对象 -->
  <script src="../lib/prop-types.js"></script>

	<script type="text/babel">

    class NewsList extends React.Component {
      state = {
        list: [],
        timer: null,
      }

      componentDidMount() {
        this.timer = setInterval(() => {
          let {list} = this.state;
          if(list.length > 10) {
            clearInterval(this.timer)
          } else {
            let oNew = `新闻${list.length+1}`;
            this.setState({
              list: [oNew, ...list]
            })
          }
        }, 1000);

      }

      getSnapshotBeforeUpdate() {
        return this.refs.list.scrollHeight;
      }

      componentDidUpdate(prevProps, prevState, snapshot) {
        let top = this.refs.list.scrollTop;
        top += this.refs.list.scrollHeight - snapshot;
        this.refs.list.scrollTop = top;
      }

      render() {
        return (
          <div className="list" ref="list">
            {
              this.state.list.map((item, index) => {
                return <div className="item" key={index}>{item}</div>
              })
            }
          </div>
        )
      }

    }

    ReactDOM.render(<NewsList/>, document.querySelector('#test'));

	</script>
</body>
</html>